[t:/]$ 지식_

rb tree 덤핑 최적화 노트

2015/03/03

대용량 복수 파일을 이중 rb tree에 찾아가며 때려넣는 루틴의 최적화 노트.

  1. rb tree 최적화 - 차일드 트리에 넣을 때 부모 트리를 써치를 2회에서 1회로 줄임, 즉, insert dup 체크에서 탈출 (조금 빨라짐. 트리 만의 비용은 적음을 알 수 있음)
  2. 멀티쓰레드 로딩 - 락비용 증가로 더 느려짐
  3. 락을 바꿔봄 - 스핀락 >>> 시스템 세마포어, 뮤텍스
  4. 락을 바꿔봄 - lock 변수 를 용도에 따라 분할하고 asm 배리어로 변경. - 왕창 빨라짐
  5. NUMA 버스 비용을 줄이기 위해 CPU 코어를 제한함 -> 느려짐
  6. 락 복잡도를 제한하기 위해 멀티쓰레드 수를 제한해봄 -> 4코어 * HT = 8코어 머신에서 4코어가 제일 빠름.
  7. O2 옵션 사용. 10% 정도 빨라짐.
  8. 인라인 펑션으로 이동 : 그저 그런듯.
  9. 파일 로딩 종료를 join으로 기다리는데 동시에 피니쉬하지 않아서 약간 노는 경향이 있음.. detach가 필요함.
  10. 어드레싱 비용을 줄이기 위하여 align을 맞챠봄. -> 변화 없음.
  11. 용도에 따른 구조체를 공용체 어트리뷰트로 바꿈 -> 코드 단순화
  12. 2000만 레코드, 280만 아이템에 대해서 현재 스코어는 로딩 14초

CAS rb tree 가져다 쓸 만 한 것 있으면 추천 부탁합니다.

직접 만들 자신은 엄꼬요.









[t:/] is not "technology - root". dawnsea, rss